//package com.sixbing.spider.service.impl;
//
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//
//import com.sixbing.spider.bean.LinkTypeData;
//import com.sixbing.spider.bean.NewsBean;
//import com.sixbing.spider.bean.Rule;
//import com.sixbing.spider.bean.WeatherData;
//import com.sixbing.spider.utils.MyUtils;
//import com.sixbing.spider.utils.RuleException;
//import org.jsoup.Connection;
//import org.jsoup.Jsoup;
//import org.jsoup.UnsupportedMimeTypeException;
//import org.jsoup.nodes.Document;
//import org.jsoup.nodes.Element;
//import org.jsoup.select.Elements;
//
//@SuppressWarnings({ "rawtypes", "unchecked" })
//public class ExtractService {
//
//	public static List getCity(Rule rule) {
//		/**
//		 * 检验rule
//		 */
//		List list = new ArrayList();
//		WeatherData weatherDataBean = null;
//		Elements results = new Elements();
//		results = getBody(rule);
//		// 对body内的数据解析
//		for (Element result : results) {
//			Elements links = result.getElementsByTag("div");
//			for (Element link : links) {
//				String linkHref = link.attr("class");
//				weatherDataBean = new WeatherData();
//				if ("blk_fc_c0_i".equals(linkHref)) {
//					Elements ps = link.getElementsByTag("p");
//					Elements uls = link.getElementsByTag("ul");
//					for (Element p : ps) {
//						String pclass = p.attr("class");
//						if ("wt_fc_c0_i_date".equals(pclass)) {
//							weatherDataBean.setDatetime(p.text());
//						}
//						if (pclass.contains("wt_fc_c0_i_day")) {
//							weatherDataBean.setWeektime(p.text());
//						}
//						if (pclass.contains("wt_fc_c0_i_icons")) {
//							Elements imgs = p.getElementsByTag("img");
//							for (int i = 0; i < imgs.size(); i++) {
//								if (i == 0) {
//									weatherDataBean.setHighimg(imgs.get(i)
//											.attr("src"));
//								} else {
//									weatherDataBean.setLowimg(imgs.get(i).attr(
//											"src"));
//								}
//
//							}
//						}
//						if (pclass.contains("wt_fc_c0_i_times")) {
//							Elements spans = p.getElementsByTag("span");
//							for (int i = 0; i < spans.size(); i++) {
//								if (i == 0) {
//									weatherDataBean.setTimeday(spans.get(i)
//											.text());
//								} else {
//									weatherDataBean.setTimenight(spans.get(i)
//											.text());
//								}
//
//							}// 35°C / 23°C
//						}
//						if ("wt_fc_c0_i_temp".equals(pclass)) {
//							String[] temp = p.text().replace(" / ", "")
//									.split("°C");
//							if (temp.length >= 2) {
//								weatherDataBean.setHightemp(temp[0]);
//								weatherDataBean.setLowtemp(temp[1]);
//							}
//
//						}
//						if ("wt_fc_c0_i_tip".equals(pclass)) {
//							weatherDataBean.setWinds(p.text());
//						}
//
//					}
//					for (Element ul : uls) {
//						Elements lis = ul.getElementsByTag("li");
//						for (int i = 0; i < lis.size(); i++) {
//							if (i == 0) {
//								weatherDataBean
//										.setWeathlevel(lis.get(i).text());
//							} else {
//								weatherDataBean.setWeathleveltext(lis.get(i)
//										.text());
//							}
//						}
//					}
//					list.add(weatherDataBean);
//				} else {
//
//				}
//			}
//		}
//
//		return list;
//	}
//
//	public static List getNews(Rule rule) {
//		/**
//		 * 检验rule
//		 */
//		List list = new ArrayList();
//		NewsBean newsBean = null;
//		Elements results = new Elements();
//		results = getBody(rule);
//		// 对body内的数据解析
//		int i = 0;
//		for (Element result : results) {
//			Elements links = result.getElementsByTag("div");
//			for (Element link : links) {
//				String linkHref = link.attr("class");
//				if ("list".equals(linkHref)) {
//					Elements listlinks = link.getElementsByTag("div");
//					for (Element listlink : listlinks) {
//						String listclass = listlink.attr("class");
//						if ("tr".equals(listclass)) {
//							newsBean = new NewsBean();
//							i = i + 1;
//							Elements as = listlink.getElementsByTag("a");
//							newsBean.setId(i);
//							for (Element a : as) {
//								String detailUrl = a.attr("href");
//								if (!detailUrl.contains("http:")) {
//									detailUrl = "http://www.ahwh.gov.cn/"
//											+ detailUrl;
//								}
//								newsBean.setDetailUrl(detailUrl);
//								newsBean.setTitle(a.attr("title"));
//							}
//							Elements divtimes = listlink
//									.getElementsByTag("div");
//							for (Element divtime : divtimes) {
//								if ("time".equals(divtime.attr("class"))) {
//									newsBean.setTimes(divtime.text().substring(
//											1, 11));
//								}
//							}
//							newsBean.setDetails("not have");
//							list.add(newsBean);
//						} else {
//
//						}
//					}
//				}
//			}
//		}
//		return list;
//	}
//
//	public static List getNewsDetail(Rule rule) {
//		/**
//		 * 检验rule
//		 */
//		int i = 0;
//		List list = new ArrayList();
//		NewsBean newsBean = null;
//		Elements results = new Elements();
//		results = getBody(rule);
//		// 对body内的数据解析
//		for (Element result : results) {
//			Elements links = result.getElementsByTag("div");
//			for (Element link : links) {
//				String linkHref = link.attr("class");
//				if ("cont".equals(linkHref)) {
//					Elements contents = link.getElementsByTag("div");
//					for (Element content : contents) {
//						String contentclass = content.attr("class");
//						if ("content".equals(contentclass)) {
//
//							i = i + 1;
//							newsBean = new NewsBean();
//							newsBean.setDetails(link.getElementsByTag("table")
//									.get(0).toString()//<img alt="" src="/Upload/images/2017-06/cb84278ee41eb12a74ed7ec1ddf8545.jpg" style="width: 600px; float: left; height: 400px">
//									+ content.toString());
//							newsBean.setDetailUrl("" + i);
//							newsBean.setId(i);
//							newsBean.setTimes("" + i);
//							newsBean.setTitle("" + i);
//						}
//					}
//				}
//			}
//			list.add(newsBean);
//		}
//		return list;
//	}
//	/**
//	 * 获得扬州市图书馆新闻页面
//	 * @param rule
//	 * @return
//	 */
//	public static List getYnagZhouNewsList(Rule rule) {
//		/**
//		 * 检验rule
//		 */
//		int i = 0;
//		List list = new ArrayList();
//		NewsBean newsBean = null;
//		Elements results = new Elements();
//		results = getBody(rule);
//		// 对body内的数据解析
//		MyUtils.Log("results="+results);
//		for (Element result : results) {
//			Elements links = result.getElementsByTag("div");
//			for (Element link : links) {
//				String linkHref = link.attr("class");
//				if ("article-list".equals(linkHref)) {
//					Elements listnews = link.getElementsByTag("li");
//					for (Element news : listnews) {
//						newsBean = new NewsBean();
//						i = i + 1;
//						newsBean.setId(i);newsBean.setDetails("please use detail request");
//						Elements listspans = news.getElementsByTag("span");
//						for (Element span : listspans) {
//							newsBean.setTimes(span.text());
//						}
//						Elements as = news.getElementsByTag("a");
//						for (Element a : as) {
//							String detailUrl = a.attr("href");
//							if (!detailUrl.contains("http:")) {
//								detailUrl = "http://www.ahwh.gov.cn/"
//										+ detailUrl;
//							}
//							newsBean.setDetailUrl(detailUrl);
//							newsBean.setTitle(a.text());
//						}
//					}
//				}
//			}
//			list.add(newsBean);
//		}
//		return list;
//	}
//	public static List<LinkTypeData> extract(Rule rule) {
//		/**
//		 * 检验rule
//		 */
//		validateRule(rule);
//
//		List<LinkTypeData> datas = new ArrayList<LinkTypeData>();
//		LinkTypeData data = null;
//		try {
//			/**
//			 * rule
//			 */
//			String url = rule.getUrl();
//			String[] params = rule.getParams();
//			String[] values = rule.getValues();
//			String resultTagName = rule.getResultTagName();
//			int type = rule.getType();
//			int requestType = rule.getRequestMoethod();
//			UnsupportedMimeTypeException mimeType = new UnsupportedMimeTypeException(
//					"Hey this is Mime", "application/xml",
//					"http://dictionary.cambridge.org/dictionary/english/reality");
//			String mime = mimeType.getMimeType();
//			Connection conn = Jsoup.connect(url).header("Content-Type", mime)
//					.ignoreContentType(false);
//			if (params != null) {
//				for (int i = 0; i < params.length; i++) {
//					conn.data(params[i], values[i]);
//				}
//			}
//			Document doc = null;
//			switch (requestType) {
//			case Rule.GET:
//				doc = conn.timeout(100000).get();
//				break;
//			case Rule.POST:
//				doc = conn.timeout(100000).post();
//				break;
//			}
//
//			Elements results = new Elements();
//			switch (type) {
//			case Rule.CLASS:
//				results = doc.getElementsByClass(resultTagName);
//				break;
//			case Rule.ID:
//				Element result = doc.getElementById(resultTagName);
//				results.add(result);
//				break;
//			case Rule.SELECTION:
//				results = doc.select(resultTagName);
//				break;
//			default:
//				// 解析获得body内容
//				if (MyUtils.isEmpty(resultTagName)) {
//					results = doc.getElementsByTag("body");
//				}
//			}
//			// 对body内的数据解析
//			for (Element result : results) {
//				Elements links = result.getElementsByTag("a");
//				for (Element link : links) {
//					// ��Ҫ��ɸѡ
//					String linkHref = link.attr("href");
//					String linkText = link.text();
//					Elements imgs = link.getElementsByTag("img");
//					String imgsrc = "";
//					for (Element img : imgs) {
//						imgsrc = img.attr("src");
//					}
//
//					if (linkHref != null && linkText != null && linkHref != ""
//							&& linkText != "" && linkText.length() > 1
//							&& linkHref.contains("http:")
//							&& linkHref.contains("http:")) {
//						data = new LinkTypeData();
//						data.setLinkimg(imgsrc);
//						data.setLinkHref(linkHref);
//						data.setLinkText(linkText);
//
//						datas.add(data);
//					}
//
//				}
//			}
//
//		} catch (IOException e) {
//			e.printStackTrace();
//		}
//
//		return datas;
//	}
//
//	/**
//	 * url
//	 */
//	private static void validateRule(Rule rule) {
//		String url = rule.getUrl();
//		if (MyUtils.isEmpty(url)) {
//			throw new RuleException("url null");
//		}
//		if (!url.startsWith("http://")) {
//			throw new RuleException("url not have http://");
//		}
//
//		if (rule.getParams() != null && rule.getValues() != null) {
//			if (rule.getParams().length != rule.getValues().length) {
//				throw new RuleException("exception");
//			}
//		}
//
//	}
//
//	/**
//	 * 解析页面获得body
//	 *
//	 * @param rule
//	 * @return results
//	 */
//	private static Elements getBody(Rule rule) {
//		Elements results = new Elements();
//		validateRule(rule);
//		try {
//			/**
//			 * rule
//			 */
//			String url = rule.getUrl();
//			MyUtils.Log("url="+url);
//			String[] params = rule.getParams();
//			String[] values = rule.getValues();
//			String resultTagName = rule.getResultTagName();
//			int type = rule.getType();
//			int requestType = rule.getRequestMoethod();
//			UnsupportedMimeTypeException mimeType = new UnsupportedMimeTypeException(
//					"Hey this is Mime", "application/xml",
//					"http://dictionary.cambridge.org/dictionary/english/reality");
//			String mime = mimeType.getMimeType();
//			Connection conn = Jsoup.connect(url).header("Content-Type", mime)
//					.ignoreContentType(false);
//			// 拼接参数
//			if (params != null) {
//				for (int i = 0; i < params.length; i++) {
//					conn.data(params[i], values[i]);
//				}
//			}
//			Document doc = null;
//			switch (requestType) {
//			case Rule.GET:
//				doc = conn.timeout(100000).get();
//				break;
//			case Rule.POST:
//				doc = conn.timeout(100000).post();
//				break;
//			}
//
//			switch (type) {
//			case Rule.CLASS:
//				results = doc.getElementsByClass(resultTagName);
//				break;
//			case Rule.ID:
//				Element result = doc.getElementById(resultTagName);
//				results.add(result);
//				break;
//			case Rule.SELECTION:
//				results = doc.select(resultTagName);
//				break;
//			default:
//				// 解析获得body内容
//				if (MyUtils.isEmpty(resultTagName)) {
//					results = doc.getElementsByTag("body");
//				}
//			}
//		} catch (IOException e) {
//			e.printStackTrace();
//		}
//		return results;
//	}
//}
